public class question_34 {
}
class Solution_34 {
//    先写一个递归的函数
    public int [] recusion(int nums[],int l,int r,int target){
//        终止条件
        if(l>r){
            return new int[]{-1,-1};
        }
        int mid=(l+r)/2;
        if(nums[mid]==target){
            int start=mid;
            int end=mid;
//            以这个mid为中心，向两边开始查找开始的index和结束的index
            for (int i = mid+1; i <nums.length ; i++) {
                if(nums[i]==target){
                    end=i;
                }else{
                    break;
                }
            }
            for (int i = mid-1; i >=0 ; i--) {
                if(nums[i]==target){
                    start=i;
                }else{
                    break;
                }
            }
            return new int[]{start,end};
        }
        return nums[mid]>target?recusion(nums,l,mid-1,target):recusion(nums,mid+1,r,target);
    }
    public int[] searchRange(int[] nums, int target) {
        if(nums==null||nums.length==0){
            return new int[]{-1,-1};
        }
        return recusion(nums,0,nums.length-1,target);
    }
}
